package InterfaceGUI;

import data.*;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Container.*;
import java.rmi.Naming;
import javax.swing.text.MaskFormatter;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.util.Vector;

/**
 *
 * @author Ben
 */
public class personAktualisieren {

JButton personAktualisieren;
JButton abbrechen;
JFrame frame;
JLabel idLabel;
JLabel vornameLabel;
JLabel nachnameLabel;
JLabel emailLabel;
JLabel raumLabel;
JLabel passwortLabel;
JLabel telefonLabel;
JTextField idField;
JTextField nachnameField;
JTextField vornameField;
JTextField emailField;
JTextField raumField;
JTextField passwortField;
JTextField telefonField;


public static void main(String[] args) {
        personAktualisieren gui = new personAktualisieren();
        gui.personAktualisieren();
        }

public void personAktualisieren(){

frame = new JFrame ("Person aktualisieren");


JPanel personAktualisierenPanel = new JPanel();

GridBagLayout gbl = new GridBagLayout();

personAktualisierenPanel.setLayout(gbl);

GridBagConstraints constraints = new GridBagConstraints();

idLabel = new JLabel("ID:");
constraints.insets = new Insets(9, 9, 9, 9);
constraints.anchor = GridBagConstraints.WEST;
constraints.weightx = 0;
personAktualisierenPanel.add(idLabel, constraints);

idField = new JTextField(3);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(idField, constraints);


vornameLabel = new JLabel("Vorname:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(vornameLabel, constraints);

vornameField = new JTextField(20);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(vornameField, constraints);

nachnameLabel = new JLabel("Nachname:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(nachnameLabel, constraints);

nachnameField = new JTextField(20);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(nachnameField, constraints);

telefonLabel = new JLabel("Telefon:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(telefonLabel, constraints);

telefonField = new JTextField(20);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(telefonField, constraints);

emailLabel = new JLabel("E-mail:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(emailLabel, constraints);

emailField = new JTextField(20);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(emailField, constraints);

raumLabel = new JLabel("Raum:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(raumLabel, constraints);

raumField = new JTextField(20);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(raumField, constraints);

passwortLabel = new JLabel("Passwort:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(passwortLabel, constraints);

passwortField = new JTextField(20);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(passwortField, constraints);



personAktualisieren = new JButton("aktualisieren");
constraints.insets = new Insets(56,9,0,0);
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(personAktualisieren, constraints);
personAktualisieren.addActionListener(new personAktualisierenListener());


abbrechen = new JButton("abbrechen");
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
personAktualisierenPanel.add(abbrechen, constraints);
abbrechen.addActionListener(new personabbrechenListener());

frame.getContentPane().add(personAktualisierenPanel);
frame.setSize(400, 400);
frame.setResizable(false);
frame.setVisible(true);


}

class personAktualisierenListener implements ActionListener{
    private String ergebnisFelder;

    public void actionPerformed(ActionEvent event){

      int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie diese Person aktualisieren?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION) {

//       auslesen der einzelnen Strings der Felder. Diese werden dann in der Variable Ergebnisfelder zusammengefasst

//         String vorname = vornameField.getText();
//         String nachname = nachnameField.getText();
//         String telefon = telefonField.getText();
//         String email = emailField.getText();
//         String raum = raumField.getText();
//         String passwort = passwortField.getText();

////
////        Überprüfen ob die zu Aktualisierende Person einen Titel trägt. Wenn Nein wird der leere String durch
////         Füllzeichen ersetzt um keine Konflikte mit der DB zu bekommen
////        if (titel.equals("")) {
////            titel = "no title";
////        }

//        //Überprüfen ob alle Pflichtfelder ausgefüllt sind
//        if (vorname.equals("") || (nachname.equals(""))) {
//            JOptionPane.showMessageDialog(frame,"Bitte alle Pflichtfelder ausfüllen!");

        //Hier muss noch eingebaut bwerden dass der Prozess nicht weiterläuft

//        }

        try {
                        // Zunächst benötigen wir eine Verbindung mit der Verwaltung.
                        Verwaltung verwaltung =
                                (Verwaltung)Naming.lookup("rmi:/localhost:1099/DRM");

                        /*
                         * Wenn wir hier ankommen, dann besteht eine Verbinung zum Server.
                         * Wäre die Verbindung nicht zustande gekommen, so wäre eine Exception
                         * ausgeworfen worden und das Programm wäre in den entsprechenden
                         * Catch-Block (s.u.) gesprungen.
                         */
                        System.out.println("Verbindung hergestellt...");

                        // Von der Verwaltung bekommen wir das Person-Objekt.
                        int ID = Integer.parseInt(idField.getText());
                        String nachname = nachnameField.getText();
                        String vorname = vornameField.getText();
                        String raum = raumField.getText();
                        String email = emailField.getText();
                        String telefon = telefonField.getText();
                        String passwort = passwortField.getText();
                        // Hier werden die neuen Daten des Person (-Objeks) in der DB aktualisiert.
                        Person x = verwaltung.updatePerson(ID, vorname, nachname, raum, email, telefon, passwort);

                }
                catch (MalformedURLException murle) {
                        System.out.println("MalformedURLException");
                        System.out.println(murle);
                }
                catch (RemoteException re) {
                        System.out.println("RemoteException");
                        System.out.println(re);
                }
                catch (NotBoundException e) {
                        System.out.println("NotBoundException");
                        System.out.println(e);
                }
                catch (NullPointerException np) {
                        System.out.println("NullPointerException");
                        System.out.println(np);
                }


          JOptionPane.showMessageDialog(frame,"Person aktualisiert!");
          frame.setVisible(false);
      }

      else if (antwort == JOptionPane.NO_OPTION)
      frame.setVisible(false);
}
}
class personabbrechenListener implements ActionListener{

    public void actionPerformed(ActionEvent event){

      int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie den Vorgang wirklich beenden?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION)
      frame.setVisible(false);
    }
}


//String get_vorname() {
//return vornameField.getText(); }
//
//String get_name() {
//return nachnameField.getText(); }
//
//String get_raum() {
//return raumField.getText(); }
//
//String get_email() {
//return emailField.getText(); }
//
//String get_telefon() {
//return telefonField.getText(); }
//
//String get_passwort() {
//return passwortField.getText(); }

}


